/*
描述
编写一个程序，将输入字符串中的字符按如下规则排序。

规则 1 ：英文字母从 A 到 Z 排列，不区分大小写。

如，输入： Type 输出： epTy

规则 2 ：同一个英文字母的大小写同时存在时，按照输入顺序排列。

如，输入： BabA 输出： aABb
规则 3 ：非英文字母的其它字符保持原来的位置。
如，输入： By?e 输出： Be?y

注意有多组测试数据，即输入有多行，每一行单独处理（换行符隔开的表示不同行）
输入：
A Famous Saying: Much Ado About Nothing (2012/8).

输出：
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

 */
while(line = readline()){
    let box = [];
    for(let i =0; i < 26;i++){
        box[i] = "";
    }
    let symbol = [];
    let arr = line.split("");
    let acod  = "a".charCodeAt();
    let zcode = "z".charCodeAt();
    let Acode = "A".charCodeAt();
    let Zcode = "Z".charCodeAt();
    for(let i =0; i <  arr.length;i++){
        let code = arr[i].charCodeAt();
        // 小写字母
        if(code >= acod && code <= zcode){
            box[code - acod] += arr[i];
        }else if(code >= Acode&& code <= Zcode){
            box[code - Acode] += arr[i];
        }else{  // 符号
            symbol.push([i,arr[i]]);
        }
    }
    let res = box.join("");
    symbol.forEach(item=>{
        res = res.substring(0,item[0]) + item[1] + res.substring(item[0]);
    })
    console.log(res);
}
